CREATE TABLE [dbo].[Tb_SSolicitudesSoporte]
(
[IDSoporte] [int] NOT NULL IDENTITY(1, 1),
[Fecha] [datetime] NULL,
[IDUsuario] [int] NULL,
[IDEquipo] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[IDTipoSoporte] [int] NOT NULL,
[DescripcionCorta] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[DescripcionLarga] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[IDEstado] [int] NOT NULL,
[IDTecnico] [int] NULL,
[FechaCumplido] [datetime] NULL,
[DescripcionTecnico] [varchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[FechaOkUsuario] [datetime] NULL
) ON [PRIMARY]
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE TRIGGER [dbo].[AsignarValores] ON [dbo].[Tb_SSolicitudesSoporte]
FOR INSERT
AS
BEGIN
     DECLARE @UsuarioNT VARCHAR(255)
     -- Asignar Estado y Fecha OK
     IF EXISTS(SELECT * FROM INSERTED WHERE IDEstado <> 1)
	UPDATE TB_SSolicitudesSoporte SET IDEstado = 1, FechaOKUsuario = NULL WHERE IDEstado <> 1
     -- Asignar Usuario
     IF EXISTS(SELECT * FROM INSERTED WHERE IDUsuario IS NULL)
	BEGIN 
		SET @UsuarioNT=  system_user
		--RTRIM( SUBSTRING(current_USER,CHARINDEX('\',current_USER)+1,255))
		IF EXISTS(SELECT IdUsuario FROM Tb_Usuarios WHERE NTUser=@UsuarioNT)
		         UPDATE TB_SSolicitudesSoporte SET IDUsuario = (SELECT IdUsuario FROM Tb_Usuarios WHERE NTUser=@UsuarioNT)  WHERE IdUsuario IS NULL
		ELSE
		         BEGIN 
			RAISERROR('Usuario Inexistente!!!',16,1)
			ROLLBACK TRANSACTION 
		         END 		
	END 
     -- Asignar Fecha Solicitud	
     IF EXISTS(SELECT * FROM INSERTED WHERE Fecha IS NULL)
	UPDATE TB_SSolicitudesSoporte SET Fecha = CONVERT(VARCHAR(10),GETDATE(),103) WHERE Fecha IS NULL
    -- Enviar Correo por Nueva Solicitud de Soporte
   -- IF EXISTS(SELECT * FROM INSERTED WHERE IDTipoSoporte IS NOT NULL)
	--RAISERROR('Enviar Correo',16,1)

END





GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE TRIGGER [dbo].[ValidarSolicitud] ON [dbo].[Tb_SSolicitudesSoporte]
FOR UPDATE
AS
BEGIN
   -- Validad Ingreso Fecha OK Usuario
   IF EXISTS(SELECT * FROM INSERTED WHERE IDEstado<>1 AND (FechaOKUsuario IS NULL OR FechaOkUsuario<Fecha))
       BEGIN
	ROLLBACK TRANSACTION 
           	RAISERROR('Error en Fecha de Ok Usuario!!!',16,1)
       END 
   -- Validar Estado Pendiente con Fecha OK Usuario
   IF EXISTS(SELECT * FROM INSERTED WHERE IDEstado=1 AND FechaOKUsuario IS NOT NULL)
       BEGIN
	ROLLBACK TRANSACTION 
           	RAISERROR('Error en  Fecha de Ok Usuario por Estado Pendiente!!!',16,1)
       END 
   -- Validad Fecha de Cumplido por el Tecnico
   IF EXISTS(SELECT * FROM INSERTED WHERE FechaCumplido IS NOT NULL AND FechaCumplido<Fecha)
       BEGIN
	ROLLBACK TRANSACTION 
	RAISERROR('Error en Fecha Cumplido !!!', 16,1)
       END 
END





GO
ALTER TABLE [dbo].[Tb_SSolicitudesSoporte] ADD CONSTRAINT [PK_Tb_SSolicitudesSoporte] PRIMARY KEY CLUSTERED  ([IDSoporte]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Tb_SSolicitudesSoporte] ADD CONSTRAINT [FK_Tb_SSolicitudesSoporte_Tb_SEstados] FOREIGN KEY ([IDEstado]) REFERENCES [dbo].[Tb_SEstados] ([IDEstado])
GO
ALTER TABLE [dbo].[Tb_SSolicitudesSoporte] ADD CONSTRAINT [FK_Tb_SSolicitudesSoporte_Tb_STecnicos] FOREIGN KEY ([IDTecnico]) REFERENCES [dbo].[Tb_STecnicos] ([IDTecnico])
GO
ALTER TABLE [dbo].[Tb_SSolicitudesSoporte] ADD CONSTRAINT [FK_Tb_SSolicitudesSoporte_Tb_STiposDeSoporte] FOREIGN KEY ([IDTipoSoporte]) REFERENCES [dbo].[Tb_STiposDeSoporte] ([IDTipoSoporte])
GO
ALTER TABLE [dbo].[Tb_SSolicitudesSoporte] WITH NOCHECK ADD CONSTRAINT [FK_Tb_SSolicitudesSoporte_tb_Usuarios] FOREIGN KEY ([IDUsuario]) REFERENCES [dbo].[tb_Usuarios] ([idUsuario])
GO
